package main

import (
	"fmt"
	"io/ioutil"
	"os"
)

/*
  文件操作

	一、读取文件：（方法1）
	1、只读方法打开文件 file,err := os.Open()
	2、读取文件 file.Read()
	3、关闭文件流  defer file.Close()

 二、读取文件（方法2）bufio 读取文件
 1、只读方式打开文件 file,err :=os.Open()
 2、创建reader对象， reader:=bufio.NewReader(file)
 3、ReadString读取文件 line,err := reader.ReadString('\n')
 4、关闭文件流  defer file.Close()

 三、
*/

func main() {

	//1、只读方式打开文件
	file, err := os.Open("../1.html")
	defer file.Close() //必须关闭文件流
	if err != nil {
		fmt.Println(err, "打开文件失败")
		return
	}
	//2、读取文件内容
	/* var strSlice []byte
	for {
		//操作文件
		var tempSlice = make([]byte, 128)
		n, err := file.Read(tempSlice)
		if err == io.EOF {
			fmt.Println("执行完毕")
			break
		}
		if err != nil {
			fmt.Println("读取文件失败")
			return
		}
		fmt.Printf("读取到%v个字节\n", n)
		strSlice = append(strSlice, tempSlice[:n]...) //注意写法

	}
	fmt.Println(string(strSlice)) */

	//3、bufio读取
	/* reader := bufio.NewReader(file)
	var myStr string
	for {
		str, err := reader.ReadString('\n') //表示一次读取一行
		myStr += str
		if err == io.EOF {
			// myStr += str
			fmt.Println("读取内容完毕")
			break
		}
		if err != nil {
			fmt.Println("读取内容失败", err)
			return
		}
	}
	fmt.Println(myStr) */

	//4、ioutil读取
	byteStr, err := ioutil.ReadFile("../1.html")
	if err != nil {
		fmt.Println("读取失败", err)
	}
	fmt.Println(string(byteStr))
}
